package com.xuyu.ddd.aggregate.core.repository;



import com.xuyu.ddd.aggregate.core.aggregate.Aggregate;
import java.io.Serializable;

/**
 * 领域对象仓储层顶层接口
 * @param <DOMAIN> 领域对象
 */
public interface DomainRepository<DOMAIN extends Serializable> {

    /**
     * 持久化领域对象
     * @param domain 领域对象
     */
    Aggregate<DOMAIN> persistence(Aggregate<DOMAIN> domain);

    /**
     * 要使用聚合根的唯一id获得领域对象
     * @param id 唯一id
     * @return 返回领域对象
     */
    Aggregate<DOMAIN> build(String id) throws IllegalAccessException;

}
